package edu.unice.simul.vue.graphes;

import java.util.Hashtable;

import javax.swing.JPanel;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.category.DefaultCategoryDataset;

/*
 * Classe permettant la cretion de graphe 
 * sous forme d'histogramme
 * 
 * 
 */

public class Histogramme extends JPanel {
	private static final long serialVersionUID = 1L;
	private JPanel pnl;

	/*
	 * constructeur panel contenant l'histogramme
	 * 
	 * @param infos : hashtable contenant les infos des stats
	 * 
	 * @param titre : titre du graphe
	 * 
	 * @param abscisse
	 * 
	 * @param ordonnee
	 */

	public Histogramme(Hashtable infos, String titre,
			String abscisse, String ordonnee) {
		this.add(Histopanel(infos, titre, abscisse, ordonnee));

	}

	// methode pour la creation creation du dataset
	private static CategoryDataset createDataset(Hashtable infos) {
		DefaultCategoryDataset dataset = new DefaultCategoryDataset();
		String s = "Personne";

		// remplissage du dataset avec le hashtable infos
		/*
		 * exemple de remplissage du dataset DefaultCategoryDataset dataset =
		 * new DefaultCategoryDataset(); dataset.addValue(10, "Personne 1",
		 * "2000"); dataset.addValue(20, "Personne 2", "2000");
		 */
		for (java.util.Enumeration e = infos.keys(); e.hasMoreElements();) {
			Comparable element = (Comparable) e.nextElement();
			dataset.addValue((Double) infos.get(element), s, element);
		}
		return dataset;
	}

	// methode pour la creation de la charte
	private static JFreeChart createChart(CategoryDataset dataset,
			String titre, String abscisse, String ordonnee) {

		JFreeChart barChart = ChartFactory.createBarChart3D(titre, abscisse,
				ordonnee, dataset, PlotOrientation.VERTICAL, true, true, false);
		return barChart;
	}

	// creation du panel contenant le graphe
	public ChartPanel Histopanel(Hashtable infos, String titre,
			String abscisse, String ordonnee) {

		JFreeChart barchart = createChart(createDataset(infos), titre,
				abscisse, ordonnee);
		ChartPanel hpanel = new ChartPanel(barchart);
		return hpanel;
	}

}